/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package espe.ccsoft.controllers;

import espe.ccsoft.controllers.utils.JsfUtil;
import espe.ccsoft.controllers.utils.MD5Encrypt;
import espe.ccsoft.dao.UsuarioDao;
import espe.ccsoft.models.Usuario;
import java.util.Properties;
import java.util.ResourceBundle;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 *
 * @author Carlos
 */
@ManagedBean
@SessionScoped
public class EmailController {
    MD5Encrypt encriptar = new MD5Encrypt();

    Usuario usuario = new Usuario();

    public String enviarEmailContrasena() throws Exception {
        UsuarioDao dao = new UsuarioDao();
        Usuario usuarioTmp = dao.findByCorreo(usuario.getCorreo());

        if (usuarioTmp != null) {
            final String username = "companiadisutransa@gmail.com";
            final String password = "disutransa";

            Properties props = new Properties();
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.port", "587");

            Session session = Session.getInstance(props,
                    new javax.mail.Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(username, password);
                        }
                    });

            try {

                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(usuarioTmp.getCorreo()));
                message.setRecipients(Message.RecipientType.TO,
                        InternetAddress.parse(usuarioTmp.getCorreo()));
                message.setSubject("Recuperación de Contraseña");
                message.setText("Estimado(a) " + usuarioTmp.getNombres() + (" ") + usuarioTmp.getApellidos() + ("\n\n")
                        + ("Reciba un coordial saludo de parte de Disutran S.A \nHemos recibido su petición "
                        + "con éxito \n Su contraseña es: " + encriptar.DecryptText(usuarioTmp.getContrasena())));

                Transport.send(message);

            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Email").getString("EnviarEmail"));
            return "forgotPassword";
        }
        JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Email").getString("CorreoInexistente"));
        return "forgotPassword";

    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

}
